package zdream.pmfield.data.foe;

/**
 * @author Zdream
 * @date 2023-12-21
 * @since 0.0.1
 */
public enum MoveRouteType {
	/**
	 * 默认, 直接攻击.
	 * 长距离攻击会受到准确度惩罚, 并可能被遮挡
	 */
	DIRECT(true, true),
	/**
	 * 投射.
	 * 长距离攻击会受到准确度惩罚, 但是不会被遮挡
	 */
	THROW(true, false),
	/**
	 * 穿透.
	 * 不会被遮挡, 且无准确度惩罚
	 */
	INFILTRATOR(false, false),
	/**
	 * 场. (比如: 火系技能喷烟)
	 * 无准确度惩罚, 极易被遮挡
	 */
	FIELD(false, true),
	/**
	 * 光线.
	 * 直线攻击, 将碰到的第一个目标作为目标.
	 * 有受到准确度惩罚, 极易被遮挡
	 */
	BEAM(true, true),

	;
	/**
	 * 是否越远, 准确度会下降.
	 * @see zdream.pmfield.stage.buff.seat.SpaceBuff#accuracyAttenuation
	 */
	public final boolean accuracyPenalty;
	/**
	 * 是否会被遮挡.
	 */
	public final boolean obscured;

	MoveRouteType(boolean accuracyPenalty, boolean obscured) {
		this.accuracyPenalty = accuracyPenalty;
		this.obscured = obscured;
	}
}
